import type { AxiosRequestConfig } from "axios";

import type { RequestClient } from "../request-client";
import type { RequestResponse } from "../types";

class FileDownloader {
	private client: RequestClient;

	constructor(client: RequestClient) {
		this.client = client;
	}

	public async download(url: string, config?: AxiosRequestConfig): Promise<RequestResponse<Blob>> {
		const finalConfig: AxiosRequestConfig = {
			...config,
			responseType: "blob",
		};

		const response = await this.client.get<RequestResponse<Blob>>(url, finalConfig);

		return response;
	}
}

export { FileDownloader };
